/*
 * ArchivoLexico.h
 *
 *  Created on: 31/03/2011
 */


#ifndef ARCHIVOLEXICO_H_
#define ARCHIVOLEXICO_H_

#include "../indice/RegistroLexico.h"
#include <fstream>
#include "iostream"

using namespace std;

class ArchivoLexico {

private:
		//Archivo donde se van a almacenar los registros rutas
		fstream archivoLexico;
		string nombreDeArchivoLexico;
public:


/****** Crea un archivo de registros lexico **************************************************************************************************************/
		ArchivoLexico(string nombreDeArchivoLexico);

/****** Escribe un registro lexico, devuelve el Id correspondiente al registro insertado ************************************************************************/
		int escribir(RegistroLexico* registroLexico);

/****** Abre el archivo para lectura ************************************************************************/
		void abrirParaLeer();

/****** Abre el archivo para escritura ************************************************************************/
		void abrirParaEscribir();

/****** Lee el registro correspondiente al Id, si no lo encuentra devuelve un registro vacio *******************************************************************************/
		RegistroLexico* leer(int idRegistroLexico);

/****** Lee el siguiente registro de manera secuencial, si no lo encuentra devuelve un registro vacio *******************************************************************************/
		RegistroLexico* leerSiguiente();

/****** Cierra el archivo *********************************************************************************************************************************************/
		void cerrar();

/****** Destruye el archivo *********************************************************************************************************************************************/
		virtual ~ArchivoLexico();

		bool estaCerrado();

		void sobreescribir();

};

#endif /* ARCHIVOLEXICO_H_ */
